/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.losalpes.marketplace.pirfb.beans;

import co.com.losalpes.marketplace.pirfb.bos.IntencionBO;
import co.com.losalpes.marketplace.pirfb.bos.SolicitudBO;
import co.com.losalpes.marketplace.pirfb.entities.Intencion;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

/**
 *
 * @author leon
 */
public class IniciarMundo {

    public static final String[] categorias = {"Ropa", "Alimentos", "Celulares", "Computadores", "Calzado"};
    public static final String[] ropa = {"Camiseta", "Pantalon", "Medias", "Chaqueta", "Buzo"};
    public static final String[] alimentos = {"Pollo", "Leche", "Huevos", "Cerdo", "Galletas"};
    public static final String[] celulares = {"Nokia", "Xpiria 11", "Samsung Galaxy 1", "HTC One", "Motorla Razr"};
    public static final String[] computadores = {"Lenovo ", "Toshiba", "Compaq", "HP", "Sony"};
    public static final String[] calzado = {"Tenis", "Zapatos", "Chancletas", "Zapatillas", "Botas"};
    public static final String[][] productos = {ropa, alimentos, celulares, computadores, calzado};
    private static Random ranGen = new Random();
    private static List<IntencionBO> intencionBOs = new ArrayList<IntencionBO>();
    private static List<SolicitudBO> solicitudBOs = new ArrayList<SolicitudBO>();
    private static boolean flag = true;

    /**
     * Inicializa una vez los valores para intenioens y solicitudes
     */
    private static void inicializar() {
        if (flag) {
            for (int i = 0; i < 100; i++) {
                IntencionBO intencion = generarIntencionBo();
                intencionBOs.add(intencion);
                if (ranGen.nextBoolean()) {
                    solicitudBOs.add(generarSolicitudBO(intencion));
                }
            }
            flag = false;
        }

    }

    private static IntencionBO generarIntencionBo() {
        Intencion c = new Intencion();
        String seq = "INT" + System.currentTimeMillis();
        c.setNumero(seq);
        c.setNit(ranGen.nextInt(20) + "");
        c.setUser(c.getNit());
        c.setEstado(Intencion.E_ABIERTA);
        c.setTipo(ranGen.nextBoolean() ? Intencion.T_COMPRA : Intencion.T_VENTA);
        int cat = ranGen.nextInt(4);
        c.setCategoria(categorias[cat]);
        c.setProducto(productos[cat][ranGen.nextInt(4)]);
        c.setCantidad(ranGen.nextInt(50));
        int month = ranGen.nextInt(2) + 10;
        int day = ranGen.nextInt(30);
        c.setFecha_entrega(new Date(113, month, day));
        c.setFecha_max_espera(new Date(113, month + ranGen.nextInt(1), day + ranGen.nextInt(15) + 15));
        c.setValor(ranGen.nextInt(20) * 5000);
        return c.toBo();
    }

    private static SolicitudBO generarSolicitudBO(IntencionBO intencionBO) {
        SolicitudBO solicitudBO = new SolicitudBO();
        if (intencionBO.getTipo().equals(Intencion.T_COMPRA)) {
            solicitudBO.setIntencion_compra(intencionBO);
            solicitudBO.setNumero_intencion_compra(intencionBO.getNumero());
            IntencionBO intVenta = genInt(intencionBO, Intencion.T_VENTA);
            solicitudBO.setIntencion_venta(intVenta);
            solicitudBO.setNumero_intencion_compra(intVenta.getNumero());
        } else {
            solicitudBO.setIntencion_venta(intencionBO);
            IntencionBO intCompra = genInt(intencionBO, Intencion.T_COMPRA);
            solicitudBO.setIntencion_compra(intCompra);
            solicitudBO.setNumero_intencion_compra(intCompra.getNumero());
        }
        String seq = "SOL" + System.currentTimeMillis();
        solicitudBO.setNumero(seq);
        if (ranGen.nextInt(10) > 5) {
            solicitudBO.setConfirmacion_comercio(ranGen.nextBoolean() ? "t" : "f");
            solicitudBO.setConfirmacion_fabricante(ranGen.nextBoolean() ? "t" : "f");
        }
        return solicitudBO;
    }

    public static IntencionBO genInt(IntencionBO intencionBO, String tipo) {
        IntencionBO intAux = new Intencion(intencionBO).toBo();
        intAux.setTipo(tipo);
        String seq = "INT" + System.currentTimeMillis();
        intAux.setNumero(seq);
        intencionBOs.add(intAux);
        return intAux;
    }

    public static List<IntencionBO> getIntencionBOs() {
        inicializar();
        return intencionBOs;
    }

    public static void setIntencionBOs(List<IntencionBO> intencionBOs) {
        IniciarMundo.intencionBOs = intencionBOs;
    }

    public static List<SolicitudBO> getSolicitudBOs() {
        inicializar();

        return solicitudBOs;
    }

    public static void setSolicitudBOs(List<SolicitudBO> solicitudBOs) {
        IniciarMundo.solicitudBOs = solicitudBOs;
    }
}
